package com.baturu.vin.gm.transformer;

import com.baturu.kit.kit.function.SafeFunction;
import com.baturu.vin.dto.superEPC.*;
import com.baturu.vin.gm.dto.GMPartsDetailDTO;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;

/**
 * @Author: chenjiahao
 * @Time: 2019/11/7
 */
public class GMSEPCPartsTransformer {

    public static final SafeFunction<GMPartsDetailDTO, SEPCPartsDTO> GM_PARTS_TO_SEPC_PARTS = input ->
            SEPCPartsDTO.builder()
                    .partsCode(StringUtils.isBlank(input.getPartsCode()) ? null : input.getPartsCode())
                    .epcName(input.getPartNameCN())
                    .btrPartsName(input.getBtrPartsName())
                    .installNum(input.getQuantity())
                    .callout(input.getPictureNO())
                    .epcPartsImageDTOs(input.getEpcPartsImageDTO())
                    .imageUrl(input.getSubject())
                    .extendAttrDTOs(Lists.newArrayList(
                            SEPCExtendAttributeDTO.builder()
                                    .desc("左/右").value(input.getHand()).code("direction")
                                    .build(),
                            SEPCExtendAttributeDTO.builder()
                                    .desc("正选装").value(input.getOptionP()).code("option")
                                    .build(),
                            SEPCExtendAttributeDTO.builder()
                                    .desc("负选装").value(input.getOptionN()).code("NOption")
                                    .build(),
                            SEPCExtendAttributeDTO.builder()
                                    .desc("车系").value(input.getSeries()).code("epcCarSystem")
                                    .build(),
                            SEPCExtendAttributeDTO.builder()
                                    .desc("车身").value(input.getBody()).code("body")
                                    .build(),
                            SEPCExtendAttributeDTO.builder()
                                    .desc("开始年").value(input.getFirstYear()).code("start")
                                    .build(),
                            SEPCExtendAttributeDTO.builder()
                                    .desc("终止年").value(input.getLastYear()).code("end")
                                    .build()
                    )).build();

    public static final SafeFunction<GMPartsDetailDTO, SEPCSearchPartsDTO> PARTS_TO_SEARCH_PARTS = input ->
            SEPCSearchPartsDTO.builder()
                    .partsDTO(SEPCPartsDTO.builder()
                            .epcName(input.getPartNameCN())
//                            .epcPartsImageDTOs(input.getEpcPartsImageDTO())
//                            .imageUrl(input.getSubject())
                            .partsCode(input.getPartsCode())
                            .build())
                    .build();

    public static final SafeFunction<GMPartsDetailDTO, SEPCSearchGroupDTO> PARTS_TO_SEARCH_GROUP = input ->
            SEPCSearchGroupDTO.builder()
                    .groupDTO(SEPCGroupDTO.builder()
                            .subGroup(input.getSubject() + ":" + input.getSubGroup())
                            .parentGroup(SEPCGroupDTO.builder()
                                    .mainGroupCode(input.getGroupCode() + ":" + input.getMainGroup())
                                    .build())
                            .imageUrl(input.getSubject())
                            .epcPartsImageDTOList(input.getEpcPartsImageDTO())
                            .build())
                    .partsDTO(SEPCPartsDTO.builder()
                            .partsCode(input.getPartsCode())
                            .imageUrl(input.getSubject())
                            .epcName(input.getPartNameCN())
                            .build())
                    .build();
}
